package com.kexio.common.excel.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Excel字段注解
 * 用于标记实体类字段，实现自动Excel导入导出
 * 
 * @author Kexio
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelField {
    
    /**
     * Excel列名（表头）
     */
    String value() default "";
    
    /**
     * 列名（同value，可选）
     */
    String name() default "";
    
    /**
     * 列索引（从0开始，-1表示自动排序）
     */
    int index() default -1;
    
    /**
     * 列宽度（字符数）
     */
    int width() default 15;
    
    /**
     * 是否必填
     */
    boolean required() default false;
    
    /**
     * 日期格式（用于Date、LocalDateTime等类型）
     */
    String dateFormat() default "yyyy-MM-dd HH:mm:ss";
    
    /**
     * 数字格式（用于数值类型）
     */
    String numberFormat() default "";
    
    /**
     * 字典类型（用于枚举值转换）
     */
    String dictType() default "";
    
    /**
     * 读取转换表达式（支持简单的映射，如："1=男,2=女"）
     */
    String readConverterExp() default "";
    
    /**
     * 导出转换表达式（支持简单的映射，如："男=1,女=2"）
     */
    String exportConverterExp() default "";
    
    /**
     * 是否导出该字段
     */
    boolean export() default true;
    
    /**
     * 是否导入该字段
     */
    boolean importField() default true;
    
    /**
     * 提示信息
     */
    String prompt() default "";
    
    /**
     * 下拉框选项（用逗号分隔）
     */
    String combo() default "";
    
    /**
     * 字段类型（用于特殊处理）
     * 0=默认, 1=图片, 2=超链接
     */
    int type() default 0;
    
    /**
     * 对齐方式
     * 0=默认, 1=左对齐, 2=居中, 3=右对齐
     */
    int align() default 0;
    
    /**
     * 小数位数（用于数值类型）
     */
    int scale() default -1;
    
    /**
     * 是否四舍五入
     */
    boolean roundingMode() default true;
    
    /**
     * 导出时在Excel中使用公式
     */
    String formula() default "";
    
    /**
     * 后缀（如单位：元、个）
     */
    String suffix() default "";
}

